home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / flilib.zip / FLISRC.ZIP / COPYSTRU.ASM < prev    next >
Assembly Source File  |  1989-12-18  |  935b  |  52 lines

  1. ;copystru.asm - contains i86_even_copy.
  2. _TEXT    SEGMENT  BYTE PUBLIC 'CODE'
  3. _TEXT    ENDS
  4. _DATA    SEGMENT  WORD PUBLIC 'DATA'
  5. _DATA    ENDS
  6. CONST    SEGMENT  WORD PUBLIC 'CONST'
  7. CONST    ENDS
  8. _BSS    SEGMENT  WORD PUBLIC 'BSS'
  9. _BSS    ENDS
  10. DGROUP    GROUP    CONST,    _BSS,    _DATA
  11.     ASSUME  CS: _TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP
  12. _TEXT      SEGMENT
  13.  
  14.  
  15. ;i86_even_copy(source, dest, count)
  16. ;Copy count bytes from source to dest.  Count must be even as copy is 
  17. ;done 16 bits at a time.  Zero counts will trash memory.
  18.     PUBLIC _i86_even_copy
  19. ;copy 
  20. _i86_even_copy PROC far
  21.     push    bp
  22.     mov    bp,sp
  23.     push di
  24.     push ds
  25.     push es
  26.     push si
  27.     push cx
  28.  
  29.     mov    ax,[bp+6+2]    ;s seg
  30.     mov ds,ax
  31.     mov    si,[bp+4+2]    ;s offset
  32.     mov ax,[bp+10+2]  ;d seg
  33.     mov es,ax
  34.     mov di,[bp+8+2]  ;d offset
  35.     mov cx,[bp+12+2]  ;count
  36.     shr cx,1
  37.  
  38.     cld
  39.     rep movsw
  40.  
  41.     pop cx
  42.     pop si
  43.     pop es
  44.     pop ds
  45.     pop di
  46.     pop    bp
  47.     ret    
  48. _i86_even_copy ENDP
  49.  
  50. _TEXT    ENDS
  51. END
  52.